Jalip Motorsport — Panel administrativo (prototipo)
JAL IP MOTORSPORT

Panel administrativo

Prototipo de interfaz con candado básico del lado del cliente — no es autenticación real.

{{ loginError }}
Esta contraseña vive en el código del sitio — cualquiera que lo abra puede leerla. Es un obstáculo básico, no seguridad real. Antes de manejar datos sensibles de verdad, esto necesita autenticación de servidor (Supabase Auth, roles y RLS).
Volver al sitio
{{ ntc.message }}
JAL IP ADMIN
{{ loggedInUserInitial }}

{{ title }}

{{ s.k }}
{{ s.v }}

{{ demoOnlyNote }}

{{ c }}
{{ cell }}

No hay citas registradas.

{{ citaCalMonthLabel }}

D
L
M
M
J
V
S
{{ dy.dayNum }} {{ pl.label }} +{{ dy.extraCount }} más

{{ citaCalPopoverDayLabel }}

N.º Cliente Teléfono Servicio Fecha Estado
{{ cr.numero }} {{ cr.cliente }} {{ cr.telefono }} {{ cr.servicio }} {{ cr.fecha }} {{ cr.estado }}
No se encontraron citas.

No hay cotizaciones registradas.

Origen Cliente Teléfono Detalle Recibida Estado
{{ qr.origen }} {{ qr.cliente }} {{ qr.telefono }} {{ qr.detalle }} {{ qr.fecha }} {{ qr.estado }}
No se encontraron cotizaciones.

Solo los proyectos marcados "Publicado" aparecen en Jalip Motorsport.dc.html, junto con los proyectos de ejemplo del sitio. Los borradores solo se ven aquí.

No hay proyectos registrados.

{{ pr.titulo }}
{{ pr.titulo }}
{{ pr.marca }} — {{ pr.modelo }}
{{ pr.tagsLabel }}
{{ pr.publicadoLabel }}
No se encontraron proyectos.

Solo las personas marcadas "Publicado" aparecen en la sección "Nuestro equipo" de Inicio. Sin nadie publicado, el sitio muestra el aviso honesto de "fotos pendientes" en vez de inventar personas.

No hay personas registradas todavía.

{{ em.nombre }}
{{ em.nombre }}
{{ em.cargo }}
{{ em.publicadoLabel }}

Los 9 servicios de fábrica (Venta de UTV, Mantenimiento, Reparación, etc.) se pueden editar u ocultar desde aquí igual que UTV/Accesorios — no se borran de verdad porque son parte del código, pero "Ocultar del sitio" los quita del sitio público hasta que los restaures. "Publicar servicio" agrega uno adicional encima de esos 9.

{{ hiddenServiciosLabel }}
{{ sv.titulo }}
{{ sv.titulo }}
{{ sv.descripcion }}
{{ sv.publicadoLabel }} Editado

Cada persona aquí puede entrar al Panel Admin con su nombre y su propia contraseña. Todos tienen el mismo acceso — esto es solo para saber quién hizo cada cambio, no para restringir nada. Debe quedar siempre al menos un usuario, y no puedes eliminar el que tiene la sesión iniciada ahora mismo.

{{ ur.nombre }} {{ ur.meBadge }}
{{ ur.passwordDisplay }}
Campo Valor actual
{{ sr.k }} {{ sr.v }}

Solo se usa en el aviso de derechos de autor del pie de página. El logo y los mensajes de WhatsApp del sitio siempre dicen "Jalip Motorsport" — cambiarlos es un ajuste aparte, no algo que este campo pueda hacer.

Contacto

Los links de Waze, Google Maps y el mapa de la sección Contacto del sitio se arman a partir de esta misma dirección — no hace falta tocar nada más.

Redes sociales

YouTube, TikTok y X solo aparecen en el sitio (pie de página) si los llenas — si los dejas vacíos, simplemente no se muestra ese ícono, nada se rompe.

Deja un campo vacío para que el sitio siga mostrando su texto original. Se guarda en este navegador (jm_admin_settings).

No hay solicitudes de evaluación de venta/cambio todavía.

Cliente Teléfono Detalle Recibida Estado
{{ qr.cliente }} {{ qr.telefono }} {{ qr.detalle }} {{ qr.fecha }} {{ qr.estado }}

Las fotos se guardan en este navegador (localStorage), comprimidas automáticamente. Aparecen al instante en el sitio si lo tienes abierto en otra pestaña — pero solo en este navegador y este equipo. Para que las vean todos los clientes hace falta subirlas a un servidor real más adelante.

{{ pi.dividerLabel }} ({{ pi.dividerCount }})
{{ pi.name }}
{{ pi.name }}
{{ pi.cat }}
{{ pi.statusLabel }} {{ pi.availabilityLabel }} {{ pi.priceLabel }} Stock: {{ pi.stockLabel }} Editado Oculto del sitio
Sin resultados para esa búsqueda.

No hay clientes registrados.

Nombre Teléfono WhatsApp Email Registrado
{{ cr.name }} {{ cr.phone }} {{ cr.whatsapp }} {{ cr.email }} {{ cr.registered }}
No se encontraron clientes.
Por página
{{ clientPageLabel }}

No hay pedidos registrados.

Número Cliente Estado Fecha Total
{{ pr.id }} {{ pr.clientName }} {{ pr.status }} {{ pr.fecha }} {{ pr.total }}
No se encontraron pedidos.
Por página
{{ pedidoPageLabel }}
Clientes
{{ dashClientsTotal }}
Con actividad relacionada{{ dashClientsWithActivity }}
Sin actividad{{ dashClientsWithoutActivity }}
Citas
{{ dashCitasTotal }}
{{ cs.k }}{{ cs.v }}
Cotizaciones
{{ dashCotizTotal }}
{{ qs.k }}{{ qs.v }}

Las cotizaciones no registran un monto — no es posible calcular su valor total.

Pedidos
{{ dashPedidosTotal }}
{{ ps.k }}{{ ps.v }}

Valor en pedidos activos: {{ dashPedidosActiveValue }}
No representa dinero cobrado — un pedido no es un pago.

Abonos
Total cobrado{{ dashTotalCobrado }}
Pendiente por cobrar{{ dashPendienteCobrar }}

Suma de abonos registrados localmente en cada pedido (sección Abonos del detalle) — no es una pasarela de pago ni facturación electrónica.

Pedidos que requieren atención
No hay pedidos activos pendientes de atención.
Centro de notificaciones
Sin actividad registrada todavía.

Citas y clientes nuevos, cambios de estado en pedidos y citas, cotizaciones nuevas. Las citas creadas antes de esta función no aparecen: no guardan fecha de creación.

{{ note }}

{{ addModalTitle }}

PASO {{ vehStep }} DE 4 · {{ vehStepName }}
Foto del UTV

Se guarda en este navegador (localStorage) y aparece de inmediato en el sitio.

Vas a poder subir la foto justo después de guardar esta unidad, desde la misma lista de Inventario de UTV.

Estas viñetas aparecen en la pestaña "Características" (y "Visión general") de la ficha del UTV. Si se deja vacío, el sitio sigue mostrando el aviso honesto de ficha pendiente en vez de inventar datos.

Estás editando una unidad del catálogo base — el cambio se guarda como un ajuste local, sin modificar el código del catálogo. Puedes restaurar los valores originales abriendo esta misma unidad y usando "Restaurar original" en su tarjeta.

Se agrega al catálogo del sitio apenas guardes — en este mismo navegador.

Cliente vinculado (opcional)
{{ citaSelectedClientName }} {{ citaSelectedClientContact }}

Sin coincidencias.

Se agrega a esta lista de citas — no envía WhatsApp ni confirma nada con el cliente automáticamente.

Estás editando un producto del catálogo base — el cambio se guarda como un ajuste local. Puedes restaurar los valores originales desde su tarjeta con "Restaurar original".

Se agrega al catálogo del sitio apenas guardes.

Cliente vinculado (opcional)
{{ cotizSelectedClientName }} {{ cotizSelectedClientContact }}

Sin coincidencias.

Se agrega a esta lista — no envía nada al cliente automáticamente, es solo para no perder el pedido.

PASO {{ proyectoStep }} DE 4 · {{ proyectoStepName }}

Cada elemento aparece como un ítem con ✓ en "Modificaciones instaladas" dentro de la ficha pública del proyecto.

Foto de portada
Foto de portada
Galería del proceso hasta 5 fotos adicionales, opcional
Foto de galería

Se guardan en este navegador (localStorage) y aparecen de inmediato en el sitio.

Vas a poder subir la portada y la galería justo después de guardar este proyecto, desde la misma lista de Proyectos.

Los proyectos sin marcar quedan como borrador — solo se ven aquí, en el panel.

Este es uno de los 9 servicios de fábrica del sitio — siempre está activo, no se puede despublicar desde aquí. Para quitarlo del sitio, usa "Ocultar del sitio" en la lista.

Se suma a los servicios propios del sitio (Venta de UTV, Mantenimiento, etc.) — este siempre abre el formulario de cotización al hacer clic, con su propio título como contexto.

Esta persona podrá iniciar sesión en este Panel Admin eligiendo su nombre en la pantalla de acceso. La contraseña queda guardada en este navegador tal cual la escribas — no es seguridad real, es solo para saber quién hizo cada cambio.

{{ quickCreatingClientNote }}

Ya existe un cliente con estos datos: "{{ clientDuplicateName }}". ¿Usar el cliente existente o crear uno nuevo de todos modos?

Se guarda en este navegador. Puedes vincular citas, cotizaciones y pedidos a este cliente desde sus propios formularios.

Convirtiendo una cotización en pedido — la cotización original se conserva sin cambios, solo queda marcada como convertida.

Cliente (opcional)
{{ pedidoSelectedClientName }} {{ pedidoSelectedClientContact }}

Sin coincidencias.

Items del pedido * {{ pedidoErrors.items }}
{{ it.name }} {{ it.quantity }} × {{ it.unitPriceLabel }} = {{ it.subtotalLabel }}

Sin coincidencias — puedes escribir el item manualmente abajo.

{{ pedidoItemDraftError }}
Subtotal{{ pedidoSubtotalLive }}
Total{{ pedidoTotalLive }}
{{ pedidoErrors.total }}

Se guarda en este navegador. No hay pagos en línea ni facturación electrónica todavía.

{{ clientDetail.name }}

Teléfono: {{ clientDetail.phone }}
WhatsApp: {{ clientDetail.whatsapp }}
Email: {{ clientDetail.email }}
Dirección: {{ clientDetail.address }}
Notas: {{ clientDetail.notes }}
Registrado: {{ clientDetailRegistered }}
Última actualización: {{ clientDetailUpdated }}
Cotizaciones ({{ clientDetailCotizCount }}) Sin cotizaciones registradas.
Citas ({{ clientDetailCitasCount }}) Sin citas registradas.
Pedidos ({{ clientDetailPedidosCount }}) Sin pedidos registrados.
Vehículos
{{ cv.label }} {{ cv.sub }} VIN: {{ cv.vin }} {{ cv.notas }}
Sin vehículos registrados.
{{ clientVehErrors.marca }}

Eliminar vehículo

¿Eliminar "{{ clientVehDeleteTargetLabel }}"? Esta acción no se puede deshacer.

Eliminar cliente

No puedes eliminar a "{{ clientDeleteTargetName }}" porque tiene registros asociados.
Citas: {{ clientDeleteCitasCount }} · Cotizaciones: {{ clientDeleteCotizCount }} · Pedidos: {{ clientDeletePedidosCount }}

¿Eliminar a "{{ clientDeleteTargetName }}"? Esta acción no se puede deshacer.

{{ catalogDeleteTitle }} {{ catalogDeleteKindLabel }}

{{ catalogDeleteBody }}

{{ citaDetail.numero }}

Cliente (texto): {{ citaDetail.cliente }}
Teléfono: {{ citaDetail.telefono }}
Email: {{ citaDetail.email }}
UTV: {{ citaDetail.utv }}
Servicio: {{ citaDetail.servicio }}
Fecha: {{ citaDetail.fecha }} · {{ citaDetail.hora }}
Estado actual: {{ citaDetail.estado }}
{{ citaDetailByLabel }}
Cambiar estado
Cliente vinculado
{{ citaLinkedClientName }} {{ citaLinkedClientContact }}
Cliente no vinculado.

Sin coincidencias.

Cotización — {{ cotizDetail.cliente }}

Cliente (texto): {{ cotizDetail.cliente }}
Teléfono: {{ cotizDetail.telefono }}
Origen: {{ cotizDetail.origen }}
Detalle: {{ cotizDetail.detalle }}
Recibida: {{ cotizDetail.fecha }}
Estado: {{ cotizDetail.estado }}
Cliente vinculado
{{ cotizLinkedClientName }} {{ cotizLinkedClientContact }}
Cliente no vinculado.

Sin coincidencias.

Pedido Esta cotización ya fue convertida en el pedido {{ cotizOrderId }}.

{{ pedidoDetail.id }}

{{ pedidoDetail.status }}
Cliente
{{ pedidoLinkedClientName }} {{ pedidoLinkedClientContact }}
Cliente no vinculado.

Sin coincidencias.

Productos
{{ it.name }} {{ it.quantity }} × {{ it.unitPrice }} = {{ it.subtotal }}
Subtotal{{ pedidoDetailSubtotal }}
Descuento{{ pedidoDetailDiscount }}
Total{{ pedidoDetailTotal }}
Notas

{{ pedidoDetail.notes }}

Historial
{{ h.status }} {{ h.dateLabel }}
Sin historial disponible (pedido registrado antes de esta función).
Abonos {{ paymentStatus }}
Abonado: {{ paymentTotalPaidLabel }} Pendiente: {{ paymentRemainingLabel }}
{{ ph.amountLabel }} — {{ ph.method }} {{ ph.dateLabel }}
{{ ph.note }}
Sin abonos registrados.
{{ paymentDraftError }}

Esto es solo un registro administrativo local — no procesa ningún pago real ni tarjeta.

Creado: {{ pedidoDetailCreated }} Última actualización: {{ pedidoDetailUpdated }}

Cancelar pedido

¿Cancelar el pedido {{ pedidoCancelTargetId }}? Esta acción cambiará su estado a Cancelado. El pedido no se elimina.

Eliminar cita

¿Deseas eliminar la cita {{ citaDeleteConfirmNumero }}? Esta acción no se puede deshacer.

Eliminar cotización

¿Deseas eliminar la cotización de {{ cotizDeleteConfirmName }}? Esta acción no se puede deshacer.

Eliminar proyecto

¿Deseas eliminar "{{ proyectoDeleteTargetTitulo }}"? Esta acción no se puede deshacer.

Eliminar persona

¿Deseas eliminar a "{{ equipoDeleteTargetNombre }}" del equipo? Esta acción no se puede deshacer.

Eliminar usuario

¿Deseas quitarle el acceso al panel a "{{ usuarioDeleteTargetNombre }}"? Esta acción no se puede deshacer.

{{ servicioDeleteTitle }} servicio

{{ servicioDeleteBody }}